
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package itm.bo.presupuestos;

//~--- non-JDK imports --------------------------------------------------------
import itm.conexion.SQLServerConection;

import itm.dao.presupuesto.PresupuestoDAO;

import itm.exception.ControlException;
import itm.exception.DAOException;
import itm.exception.PresupuestoException;

import itm.vo.presupuestos.ComponenteVO;
import itm.vo.presupuestos.PresupuestoVO;
import itm.vo.presupuestos.fuenteRubroVO;
import itm.vo.presupuestos.presupuestosVO;
import itm.vo.presupuestos.rubroProyectoVO;
import itm.vo.proyectosInvestigacion.ProyectoInvestigacionVO;

//~--- JDK imports ------------------------------------------------------------

import java.sql.Connection;
import java.sql.SQLException;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Juan Carlos Preciado
 */
public class PresupuestosBO {

    public int crearRubro(presupuestosVO PresupuestosVO) throws Exception {
        int resultado = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {

            // dbConexion     = conexion.openConnection();
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro(PresupuestosVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String crearRubro_Fuentes_Aprobadas(presupuestosVO rubroVO) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {

            // dbConexion     = conexion.openConnection();
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_Fuentes_Aprobadas(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String crearRubro_Fuentes_Est(presupuestosVO rubroVO) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {

            // dbConexion     = conexion.openConnection();
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_Fuentes_Est(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int crearRubro_Proy_Real(presupuestosVO rubroVO) throws Exception {
        int resultado = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {

            // dbConexion     = conexion.openConnection();
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_Proy_Real(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int crearRubro_Proy_Aprobado(presupuestosVO rubroVO) throws Exception {
        int resultado = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {

            // dbConexion     = conexion.openConnection();
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_Proy_Aprobado(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int crearRubro_Proy_Est(presupuestosVO PresupuestosVO) throws Exception {
        int resultado = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_Proy_Est(PresupuestosVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int crearComponente(presupuestosVO PresupuestosVO) throws Exception {
        int resultado = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearComponente(PresupuestosVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String crearRubro_X_Proy_Real(presupuestosVO rubroVO) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_X_Proy_Real(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String crearRubro_X_Proy_Aprobado(presupuestosVO rubroVO) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_X_Proy_Aprobado(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String crearRubro_X_Proy_Est(presupuestosVO rubroVO) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.crearRubro_X_Proy_Est(rubroVO);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String insertarRubroXP_Est(presupuestosVO rubroXFuente) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.insertarRubroXP_Est(rubroXFuente);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public String insertarRubroXPeriodo_Est(presupuestosVO rubroXPeriodo) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.insertarRubroXPeriodo_Est(rubroXPeriodo);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public List<ProyectoInvestigacionVO> listarProyectos() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarProyecto();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<ProyectoInvestigacionVO> listarProyectos_Sinrubros_Est() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarProyecto_SinRubros_Est();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<ProyectoInvestigacionVO> listarProyectos_por_Apb() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarProyecto_por_Apb();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<ProyectoInvestigacionVO> listarProyecto_Aprobados() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarProyecto_Aprobados();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<ProyectoInvestigacionVO> listarDefProyectoXApb() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarDefProyectoXApb();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<ProyectoInvestigacionVO> listarDefProyectoXReal() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarDefProyectoXReal();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<ProyectoInvestigacionVO> listarProyectos_conRubros() throws Exception {
        List<ProyectoInvestigacionVO> listaProyectos = new ArrayList<ProyectoInvestigacionVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaProyectos = presupuestoDAO.listarProyecto_conRubros();
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaProyectos;
    }

    public List<presupuestosVO> listarRubros() throws Exception {
        List<presupuestosVO> listaRubros = new ArrayList<presupuestosVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubros = presupuestoDAO.consultarRubros();
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaRubros;
    }

    public List<presupuestosVO> listaRubroProy(int idProy) throws Exception {
        List<presupuestosVO> listaRubroProy = new ArrayList<presupuestosVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubroProy = presupuestoDAO.consultarRubrosProy(idProy);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaRubroProy;
    }

    public List<presupuestosVO> listaRubroProy_Apro(int idProy) throws Exception {
        List<presupuestosVO> listaRubroProy = new ArrayList<presupuestosVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubroProy = presupuestoDAO.consultarRubrosProy_Apro(idProy);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaRubroProy;
    }

    public List<rubroProyectoVO> listaRubroProyecto(long idProy) throws Exception {
        List<rubroProyectoVO> listaRubroProy2 = new ArrayList<rubroProyectoVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubroProy2 = presupuestoDAO.consultarRubrosProyecto(idProy);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaRubroProy2;
    }

    public List<fuenteRubroVO> listaFuentesProy(long idProy) throws Exception {
        List<fuenteRubroVO> listaFuentesProy = new ArrayList<fuenteRubroVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaFuentesProy = presupuestoDAO.consultarFuentesProy(idProy);
        } catch (Exception ex) {
            ex.getStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaFuentesProy;
    }

    /*
     * public int valorFuenteEst(int idProy, int idRubro, int idFuenteF) throws Exception {
     * int valorF = 0;
     * Connection          dbConexion = null;
     * PresupuestoDAO      presupuestoDAO;
     * SQLServerConnection conexion = new SQLServerConnection();
     * try {
     * dbConexion     = conexion.openConnection();
     * presupuestoDAO = new PresupuestoDAO(dbConexion);
     * valorF         = presupuestoDAO.valorFuenteEst(idProy, idRubro, idFuenteF);
     * } catch (SQLException ce) {
     * ce.printStackTrace();
     * } finally {
     * conexion.closeConnection(dbConexion);
     * }
     *
     * return valorF;
     * }
     */
    /**
     * @param   idRubro  Codigo o identificador que designa el rubro del cual se deben establecer los componentes
     * @return  Listado de componentes o conceptos correspondiente a un determinado rubro
     */
    public List<ComponenteVO> consultaComponentes(int idRubro, long idProyecto) throws PresupuestoException {
        List<ComponenteVO> listaComponente = new ArrayList<ComponenteVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaComponente = presupuestoDAO.consultarComponentes(idRubro);
            if (idProyecto != 0) {
                for (int i = 0; i < listaComponente.size(); i++) {
                    listaComponente.get(i).setLstFuentes(presupuestoDAO.listarComponenteFuenteEst(idRubro, idProyecto));
                }
            }
            return listaComponente;
        } catch (DAOException ex) {
            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        } finally {
            conexion.closeConnection(dbConexion);
        }

    }

    public List<ComponenteVO> consultaComponentesApr(int idRubro, long idProyecto) throws PresupuestoException {
        List<ComponenteVO> listaComponente = new ArrayList<ComponenteVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaComponente = presupuestoDAO.consultarComponentes(idRubro);
            if (idProyecto != 0) {
                for (int i = 0; i < listaComponente.size(); i++) {
                    listaComponente.get(i).setLstFuentes(presupuestoDAO.listarComponenteFuenteApr(idRubro, idProyecto, listaComponente.get(i).getCodigoComponente()));
                }
            }
            return listaComponente;
        } catch (DAOException ex) {
            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        } finally {
            conexion.closeConnection(dbConexion);
        }

    }

    public List<ComponenteVO> consultaComponentesReal(int idRubro, long idProyecto) throws PresupuestoException {
        List<ComponenteVO> listaComponente = new ArrayList<ComponenteVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaComponente = presupuestoDAO.consultarComponentes(idRubro);
            if (idProyecto != 0) {
                for (int i = 0; i < listaComponente.size(); i++) {
                    listaComponente.get(i).setLstFuentes(presupuestoDAO.listarComponenteFuenteReal(idRubro, idProyecto, listaComponente.get(i).getCodigoComponente()));
                }
            }
            return listaComponente;
        } catch (DAOException ex) {
            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        } finally {
            conexion.closeConnection(dbConexion);
        }

    }

    public List<ComponenteVO> listarPresupComEst(long idProy, long idRubro, List<ComponenteVO> listaComponentes) {
        try {
            SQLServerConection conexion = new SQLServerConection();
            Connection dbConexion = null;
            PresupuestoDAO presupuestoDAO;
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            return presupuestoDAO.listarPresupComEst(idProy, idRubro, listaComponentes);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            return listaComponentes;
        }

    }

    public List<ComponenteVO> listarPresupComApr(long idProy, long idRubro, List<ComponenteVO> listaComponentes) {
        try {
            SQLServerConection conexion = new SQLServerConection();
            Connection dbConexion = null;
            PresupuestoDAO presupuestoDAO;
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            return presupuestoDAO.listarPresupComApr(idProy, idRubro, listaComponentes);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            return listaComponentes;
        }

    }

    public List<ComponenteVO> listarPresupComReal(long idProy, long idRubro, List<ComponenteVO> listaComponentes) {
        try {
            SQLServerConection conexion = new SQLServerConection();
            Connection dbConexion = null;
            PresupuestoDAO presupuestoDAO;
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            return presupuestoDAO.listarPresupComReal(idProy, idRubro, listaComponentes);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            return listaComponentes;
        }

    }

    public void modificarPresupuesto(long idProyecto, String status) {
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        try {

            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            presupuestoDAO.modificarPresupuesto(idProyecto, status);
            conexion.commit();
        } catch (ControlException ex) {
            try {
                conexion.rollback();
                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ControlException ex1) {
                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex1);
            }
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public int tempoEstProy(long idProy) throws Exception {
        int tiempo = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            tiempo = presupuestoDAO.tempoEstProy(idProy);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return tiempo;
    }

    public String tipo_Tiempo_Est(long idProy) throws Exception {
        String resultado = "NO";

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            resultado = presupuestoDAO.tipo_Tiempo_Est(idProy);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return resultado;
    }

    public int valorPeriodoEst(int idProy, int idRubro, int periodoactual) throws Exception {
        int valorP = 0;

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            valorP = presupuestoDAO.valorPeriodoEst(idProy, idRubro, periodoactual);
        } catch (SQLException ce) {
            ce.printStackTrace();
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return valorP;
    }

    /**
     * getPresupComponenteEstimado
     * @param   idRubro  Codigo o identificador que designa el rubro del cual se deben establecer los componentes
     * @return  Listado de componentes o conceptos correspondiente a un determinado rubro
     */
    public List<ComponenteVO> getPresupComponenteEstimado(long idRubro) throws PresupuestoException {
        List<ComponenteVO> listaComponente = new ArrayList<ComponenteVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaComponente = presupuestoDAO.consultarPresupPorComponenteEstimado(idRubro);
        } catch (DAOException ex) {
            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaComponente;
    }

    /**
     * getPresupComponenteEstimado
     * @param   idRubro  Codigo o identificador que designa el rubro del cual se deben establecer los componentes
     * @return  Listado de componentes o conceptos correspondiente a un determinado rubro
     */
    public List<fuenteRubroVO> getPresupPorFuenteEstimado(long idPresupuesto, long idProyecto, long idRubro)
            throws PresupuestoException {
        List<fuenteRubroVO> listaObj = new ArrayList<fuenteRubroVO>();

        // SQLServerConnection conexion = new SQLServerConnection();
        SQLServerConection conexion = new SQLServerConection();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaObj = presupuestoDAO.consultarPresupPorFuenteEstimado(idPresupuesto, idProyecto, idRubro);
        } catch (DAOException ex) {
            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        } finally {
            conexion.closeConnection(dbConexion);
        }

        return listaObj;
    }

    /**
     * getPresupComponenteEstimado
     * @param   idRubro  Codigo o identificador que designa el rubro del cual se deben establecer los componentes
     * @return  Listado de componentes o conceptos correspondiente a un determinado rubro
     */
    public void guardarPresupComponenteEstimado(long idProyecto, String status, long idRubro, List<ComponenteVO> componentes, long idTipoPres, String usuario) throws PresupuestoException {
        Connection dbConexion = null;
        SQLServerConection conexion = new SQLServerConection();
        try {
            PresupuestoDAO presupuestoDAO;
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            presupuestoDAO.modificarPresupuesto(idProyecto, status);
            for (int i = 0; i < componentes.size(); i++) {
                for (int j = 0; j < componentes.get(i).getLstFuentes().size(); j++) {
                    presupuestoDAO.guardarPresupComponenteEstimado(idProyecto, idRubro, componentes.get(i).getCodigoComponente(),
                            componentes.get(i).getLstFuentes().get(j).getIdFuenteF(), idTipoPres, usuario, componentes.get(i).getLstFuentes().get(j).getValorFuenteF(), componentes.get(i).getLstFuentes().get(j).getValorPorDistribuir());
                }
            }

            conexion.commit();
        } catch (ControlException ex) {
            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        } catch (DAOException ex) {
            ex.printStackTrace();

            try {
                conexion.rollback();
            } catch (ControlException e) {
            }

            throw new PresupuestoException("Se presentaron problemas al listar los componentes de los rubros", ex);
        }
    }

    public void crearPresupCompApr(long idProyecto, String status, long idRubro, List<ComponenteVO> componentes, long idTipoPres, String usuario) throws PresupuestoException {
        Connection dbConexion = null;
        SQLServerConection conexion = new SQLServerConection();
        try {
            PresupuestoDAO presupuestoDAO;
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            presupuestoDAO.modificarPresupuesto(idProyecto, status);
            for (int i = 0; i < componentes.size(); i++) {
                for (int j = 0; j < componentes.get(i).getLstFuentes().size(); j++) {
                    presupuestoDAO.crearPresupCompApr(idProyecto, idRubro, componentes.get(i).getCodigoComponente(),
                            componentes.get(i).getLstFuentes().get(j).getIdFuenteF(), idTipoPres, usuario, componentes.get(i).getLstFuentes().get(j).getValorFuenteF(), componentes.get(i).getLstFuentes().get(j).getValorPorDistribuir());
                }
            }
            conexion.commit();
        } catch (ControlException ex) {
            try {
                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
                conexion.rollback();
                throw new PresupuestoException("Error al realizar commit: PresupuestosBO:crearPresupCompApr", ex);
            } catch (ControlException ex1) {
                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex1);
                throw new PresupuestoException("Error al realizar rollback: PresupuestosBO:crearPresupCompApr", ex1);
            }
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:crearPresupCompApr", ex);
        }
    }

    public void crearPresupCompReal(long idProyecto, String status, long idRubro, List<ComponenteVO> componentes, long idTipoPres, String usuario) throws PresupuestoException {
        Connection dbConexion = null;
        SQLServerConection conexion = new SQLServerConection();
        try {
            PresupuestoDAO presupuestoDAO;
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            presupuestoDAO.modificarPresupuesto(idProyecto, status);
            for (int i = 0; i < componentes.size(); i++) {
                for (int j = 0; j < componentes.get(i).getLstFuentes().size(); j++) {
                    presupuestoDAO.crearPresupCompReal(idProyecto, idRubro, componentes.get(i).getCodigoComponente(),
                            componentes.get(i).getLstFuentes().get(j).getIdFuenteF(), idTipoPres, usuario, componentes.get(i).getLstFuentes().get(j).getValorFuenteF(), componentes.get(i).getLstFuentes().get(j).getValorPorDistribuir());
                }
            }
            conexion.commit();
        } catch (ControlException ex) {
            try {
                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
                conexion.rollback();
                throw new PresupuestoException("Error al realizar commit: PresupuestosBO:crearPresupCompReal", ex);
            } catch (ControlException ex1) {
                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex1);
                throw new PresupuestoException("Error al realizar rollback: PresupuestosBO:crearPresupCompReal", ex1);
            }
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:crearPresupCompReal", ex);
        }
    }

    public List<rubroProyectoVO> consultarRubProyPresEst(long idProyecto) {
        try {
            Connection dbConexion = null;
            PresupuestoDAO presupuestoDAO;
            SQLServerConection conexion = new SQLServerConection();
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            return presupuestoDAO.consultarRubProyPresEst(idProyecto);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

    /* Registrar presupuesto */
    public void registrarPresupFuenteEst(PresupuestoVO presupuesto) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();

        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            presupuestoDAO.crearPresupuesto(presupuesto);

            for (rubroProyectoVO rubro : presupuesto.getEstimado()) {
                for (fuenteRubroVO fuente : rubro.getListaRubros()) {
                    fuente.setIdRubro(rubro.getIdRubro());
                    presupuestoDAO.registrarPresupFuenteEst(presupuesto.getIdPresupuesto(), fuente);
                }
            }

            conexion.commit();
        } catch (DAOException ce) {
            ce.printStackTrace();

            try {
                conexion.rollback();
            } catch (ControlException e) {
            }

            throw new DAOException("No se asigno el valor presupuestado a la fuente", ce);
        }
    }

    public void registrarPresupPeriodoEst(long idProyecto, String status, List<rubroProyectoVO> rubroProy)
            throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();

        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);

        try {
            presupuestoDAO.modificarPresupuesto(idProyecto, status);

            for (int i = 0; i < rubroProy.size(); i++) {
                for (int j = 0; j < rubroProy.get(i).getListaPeriodos().size(); j++) {
                    presupuestoDAO.guardarPresupPeriodoEstimado(
                            rubroProy.get(i).getListaPeriodos().get(j).getPeriodo(), rubroProy.get(i).getIdRubro(),
                            idProyecto, rubroProy.get(i).getListaPeriodos().get(j).getValorPeriodo());
                }
            }

            try {
                conexion.commit();
            } catch (ControlException ex) {
                try {
                    conexion.rollback();
                } catch (ControlException ex1) {
                    Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex1);
                }

                Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);

            throw new DAOException("Error al asignar el valor presupuestado por periodo", ex);
        }
    }

    public List<rubroProyectoVO> listarPresupFteApr(long idProy) throws Exception {
        List<rubroProyectoVO> listaRubros = new ArrayList<rubroProyectoVO>();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubros = presupuestoDAO.listarPresupFteApr(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO, listarPresupFteApr", ex);
        }
        return listaRubros;
    }

    public List<rubroProyectoVO> listarPresupFteReal(long idProy) throws Exception {
        List<rubroProyectoVO> listaRubros = new ArrayList<rubroProyectoVO>();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubros = presupuestoDAO.listarPresupFteReal(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO, listarPresupFteReal", ex);
        }
        return listaRubros;
    }

    public List<rubroProyectoVO> listarRubrosProyPresuApr(long idProy) throws Exception {
        List<rubroProyectoVO> listaRubros = new ArrayList<rubroProyectoVO>();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubros = presupuestoDAO.listarRubrosProyPresuApr(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO, listarRubrosProyPresuApr", ex);
        }
        return listaRubros;
    }

    public List<rubroProyectoVO> listarRubrosProyPresuReal(long idProy) throws Exception {
        List<rubroProyectoVO> listaRubros = new ArrayList<rubroProyectoVO>();
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        try {
            dbConexion = conexion.openConnection();
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            listaRubros = presupuestoDAO.listarRubrosProyPresuReal(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO, listarRubrosProyPresuApr", ex);
        }
        return listaRubros;
    }

    public void crearFuenteApr(long idProy, List<rubroProyectoVO> listaRubros) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        for (int i = 0; i < listaRubros.size(); i++) {
            for (int j = 0; j < listaRubros.get(i).getListaRubros().size(); j++) {
                try {
                    presupuestoDAO.crearFuenteApr(idProy, listaRubros.get(i).getIdRubro(), listaRubros.get(i).getListaRubros().get(j).getIdFuenteF(), listaRubros.get(i).getListaRubros().get(j).getValorFuenteF());
                } catch (DAOException ex) {
                    Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
                    throw new Exception("Error: PresupuestosBO, crearFuenteApr", ex);
                }
            }
        }
    }

    public void crearFuenteReal(long idProy, List<rubroProyectoVO> listaRubros) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        for (int i = 0; i < listaRubros.size(); i++) {
            for (int j = 0; j < listaRubros.get(i).getListaRubros().size(); j++) {
                try {
                    presupuestoDAO.crearFuenteReal(idProy, listaRubros.get(i).getIdRubro(), listaRubros.get(i).getListaRubros().get(j).getIdFuenteF(), listaRubros.get(i).getListaRubros().get(j).getValorFuenteF());
                } catch (DAOException ex) {
                    Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
                    throw new Exception("Error: PresupuestosBO, crearFuenteApr", ex);
                }
            }
        }
    }

    public int duracionProyectoApr(long idProy) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        try {
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            return presupuestoDAO.duracionProyectoApr(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:duracionProyectoApr", ex);
        }

    }

    public int duracionProyectoReal(long idProy) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        try {
            presupuestoDAO = new PresupuestoDAO(dbConexion);
            return presupuestoDAO.duracionProyectoReal(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:duracionProyectoReal", ex);
        }

    }

    public String tipoPeriodoProyApr(long idProy) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.tipoPeriodoProyApr(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:tipoPeriodoProyApr", ex);
        }
    }

    public String tipoPeriodoProyReal(long idProy) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.tipoPeriodoProyReal(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:tipoPeriodoProyReal", ex);
        }
    }

    public List<rubroProyectoVO> listarPeriodoProyApr(long idProy, List<rubroProyectoVO> listaRubros) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.listarPeriodoProyApr(idProy, listaRubros);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:listarPeriodoProyApr", ex);
        }
    }

    public List<rubroProyectoVO> listarPeriodoProyReal(long idProy, List<rubroProyectoVO> listaRubros) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.listarPeriodoProyReal(idProy, listaRubros);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:listarPeriodoProyReal", ex);
        }
    }

    public void crearPresupPeriodoApr(long idProy, List<rubroProyectoVO> listaRubros) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            for (int i = 0; i < listaRubros.size(); i++) {
                for (int j = 0; j < listaRubros.get(i).getListaPeriodos().size(); j++) {
                    presupuestoDAO.crearPresupPeriodoApr(listaRubros.get(i).getListaPeriodos().get(j).getPeriodo(), listaRubros.get(i).getIdRubro(), idProy, listaRubros.get(i).getListaPeriodos().get(j).getValorPeriodo());
                }
            }
            this.modificarPresupuesto(idProy, "A_TIM");
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:crearPresupPeriodoApr", ex);
        }
    }

    public void crearPresupPeriodoReal(long idProy, List<rubroProyectoVO> listaRubros) throws Exception {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            for (int i = 0; i < listaRubros.size(); i++) {
                for (int j = 0; j < listaRubros.get(i).getListaPeriodos().size(); j++) {
                    presupuestoDAO.crearPresupPeriodoReal(listaRubros.get(i).getListaPeriodos().get(j).getPeriodo(), listaRubros.get(i).getIdRubro(), idProy, listaRubros.get(i).getListaPeriodos().get(j).getValorPeriodo());
                }
            }
            this.modificarPresupuesto(idProy, "R_TIM");
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new Exception("Error: PresupuestosBO:crearPresupPeriodoReal", ex);
        }
    }

    public String existeCompoEst(long idProy, long idRubro) throws PresupuestoException {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.existeCompoEst(idProy, idRubro);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:existeCompoEst", ex);
        }
    }

    public String existeCompoApr(long idProy, long idRubro) throws PresupuestoException {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.existeCompoApr(idProy, idRubro);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:existeCompoApr", ex);
        }
    }

    public String existeCompoReal(long idProy, long idRubro) throws PresupuestoException {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.existeCompoReal(idProy, idRubro);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:existeCompoReal", ex);
        }
    }

    public String existePresupuestoEstimado(long idProy) throws PresupuestoException {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            return presupuestoDAO.existePresupuestoEstimado(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:existePresupuestoEstimado", ex);
        }
    }

    public void modificarStatusProyecto(long idProy) throws PresupuestoException {
        Connection dbConexion = null;
        PresupuestoDAO presupuestoDAO;
        SQLServerConection conexion = new SQLServerConection();
        dbConexion = conexion.openConnection();
        presupuestoDAO = new PresupuestoDAO(dbConexion);
        try {
            presupuestoDAO.modificarStatusProyecto(idProy);
        } catch (DAOException ex) {
            Logger.getLogger(PresupuestosBO.class.getName()).log(Level.SEVERE, null, ex);
            throw new PresupuestoException("Error: PresupuestosBO:modificarStatusProyecto", ex);
        }
    }

    
}
